iT邦幫忙

2024 iThome 鐵人賽

DAY 25
0
Security

為何我的資訊安全被遺忘了系列 第 25

為何我的資訊安全被遺忘了Day25-SM2金鑰交換

  • 分享至 

  • xImage
  •  

SM2金鑰交換也是有2個人A和B,
首先A的回合
A會選擇一個隨機數 r_A
A計算 R_A=r_A G=(x_1,y_1),並把R_A給B
換到B的回合
B會選擇一個隨機數r_B
B計算R_B=r_B G=(x_2,y_2)
B計算x ̅_2=2^w+(x_2&(2^w-1))
其中w=⌈(⌈log_2⁡(n) ⌉/2)⌉-1
B計算t_B=(d_B+x ̅_2⋅r_B) mod n
B驗證R_A 有沒有在 ECC的方程式
B計算x ̅_1=2^w+(x_1&(2^w-1))
B計算V=h⋅t_B (P_A+[x ̅_1 ] R_A )=(x_v,y_v)
B計算K_B=KDF(x_v∥y_v∥Z_A∥Z_B,klen)
B計算S_B=H(0x02∥y_v∥H(x_v∥Z_A∥Z_B∥x_1∥y_1∥x_2∥y_2))
B把R_B 、S_B給A
A的回合
A計算x ̅_1=2^w+(x_1&(2^w-1))
A計算t_A=(d_A+x ̅_1⋅r_A) mod n
A驗證R_B有沒有在ECC方程式裡
A計算x ̅_2=2^w+(x_2&(2^w-1))
A計算U=h⋅t_A (P_B+[x ̅_2 ] R_B )=(x_U,y_U)
A計算K_A=KDF(x_U∥y_U∥Z_A∥Z_B,klen)
A計算S_1=H(0x02∥y_U∥H(x_U∥Z_A∥Z_B∥x_1∥y_1∥x_2∥y_2))
A檢查S_1=S_B
A計算S_A=H(0x03∥y_U∥H(x_U∥Z_A∥Z_B∥x_1∥y_1∥x_2∥y_2))
之後把S_A給B
B的回合
B計算S_2=H(0x03∥y_V∥H(x_V∥Z_A∥Z_B∥x_1∥y_1∥x_2∥y_2))
B檢查S_2=S_A
這邊會比較複雜,對於大部分都在使用A選一個xP,B選一個yP把對方的公鑰和自己的私鑰做結合就能達成交鑰協議的簡單作法,這邊相對困難很多,但簡單的作法其實是不行的,因為如果有一個中間人的話就能做竄改,所以在金鑰協議的時候,一定要確認對方的身分!

https://ithelp.ithome.com.tw/upload/images/20240926/20140126WZM1JU0Bb0.jpg


上一篇
為何我的資訊安全被遺忘了Day24-SM2加解密
下一篇
為何我的資訊安全被遺忘了Day26-SM2數位簽章
系列文
為何我的資訊安全被遺忘了30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言